/**
 * 全局导航工具
 * 用于在非React组件中进行路由跳转，如axios拦截器
 */

// 全局导航函数引用
let globalNavigate: ((path: string, options?: { replace?: boolean }) => void) | null = null;

/**
 * 设置全局导航函数
 * 在App组件中调用，传入useNavigate的实例
 */
export const setGlobalNavigate = (navigate: (path: string, options?: { replace?: boolean }) => void) => {
  globalNavigate = navigate;
};

/**
 * 执行全局导航
 * 在axios拦截器等非React组件中使用
 */
export const navigateTo = (path: string, options?: { replace?: boolean }) => {
  if (globalNavigate) {
    globalNavigate(path, options);
  } else {
    // 如果全局导航函数未设置，使用window.location作为备选方案
    console.warn('全局导航函数未设置，使用window.location跳转');
    if (options?.replace) {
      window.location.replace(path);
    } else {
      window.location.href = path;
    }
  }
};

/**
 * 跳转到登录页
 * 根据当前路径判断跳转到普通登录页还是平台登录页
 */
export const navigateToLogin = () => {
  const currentPath = window.location.pathname;
  
  // 如果当前在平台管理路径下，跳转到平台登录页
  if (currentPath.startsWith('/platform')) {
    navigateTo('/platform-login', { replace: true });
  } else {
    // 否则跳转到普通登录页
    navigateTo('/login', { replace: true });
  }
};

/**
 * 跳转到首页
 * 根据当前路径判断跳转到普通首页还是平台首页
 */
export const navigateToHome = () => {
  const currentPath = window.location.pathname;
  
  // 如果当前在平台管理路径下，跳转到平台首页
  if (currentPath.startsWith('/platform')) {
    navigateTo('/platform/dashboard', { replace: true });
  } else {
    // 否则跳转到普通首页
    navigateTo('/dashboard', { replace: true });
  }
};